#!/bin/bash
#================基础参数================
#参数设置
user="root"
password="password01!"
port="3306"

#数据库名称,改成要备份的库
db_name="db_name"

#备份位置(若不存在,会自动创建)
datafile_path="/opt/backup/database_bak"

#mysqlDump的绝对位置,基本为mysql安装路径,查看:whereis mysqldump
mysqlDump_path="/usr/bin/mysqldump"

#mysql socket地址 查看: netstat -ln | grep mysql
mysql_socket="/var/lib/mysql/mysql.sock"


#是否删除.sql文件(包含子目录): ON开启,其他字符不开启
rf_switch="ON"

#数据保留天数(按文件修改时间计算)
expire_day=180

#================非开发人员勿改================
#备份最终路径
bak_path="${datafile_path}/${db_name}"
#错误日志文件名称
error_log="${bak_path}/${db_name}_error.log"

#================备份执行指令================
#判断文件夹,不存在则创建
if [ ! -d "$bak_path" ]
then
	mkdir -p  ${bak_path}
	echo "已创建文件夹${bak_path}"
fi

#判断mysql是否开启
checkPort=`lsof -i:${port} | wc -l`
if [ "$checkPort" -gt "0" ]
then
        echo "mysql 已启动"
else
        echo "mysql 未启动无法进行备份"
		echo "mysql 未启动无法进行备份" > $error_log
fi

#执行备份
${mysqlDump_path} --socket=${mysql_socket} -u${user} -p${password} ${db_name} > ${bak_path}"/"${db_name}$(date +"%Y%m%d%H%M%S_%N").sql 2>>${error_log}


#删除过期文件
if [ $rf_switch == "ON" ]
then
	find ${bak_path} -name "*.sql" -mtime +${expire_day} | xargs rm -f
fi